import {ipcMain} from 'electron'
import {autoUpdater} from 'electron-updater'
const isDev = (process.env.NODE_ENV === 'development')
const isMac = (process.platform === 'darwin')
const path = require('path')
var fs = require('fs-extra');


export function autoUpdateInit (mainWindow) {

  let updaterCacheDirName = 'electron-updater1'
  const updatePendingPath = path.join(autoUpdater.app.baseCachePath, updaterCacheDirName, 'pending')
  fs.emptyDir(updatePendingPath)

  if (isDev) {
    autoUpdater.updateConfigPath = path.join(__dirname, 'dev-app-update.yml')
    autoUpdater.currentVersion = '0.0.4'
  }
  // else {
  //   autoUpdater.updateConfigPath = path.join(__dirname, '../../../app-update.yml')
  // }
  autoUpdater.autoDownload = false // 关闭自动更新
  autoUpdater.autoInstallOnAppQuit = true // APP退出的时候自动安装

  // 发送消息给渲染线程
  function sendStatusToWindow(status, params) {
    console.log('通知render')
    console.log(status)
    mainWindow.webContents.send(status, params)
  }

  autoUpdater.on('checking-for-update', () => {
    sendStatusToWindow('Checking for update...')
  })
  autoUpdater.on('update-available', (info) => {
    // 可以更新版本
    sendStatusToWindow('autoUpdater-canUpdate', info)
  })
  autoUpdater.on('update-not-available', (info) => {
    // 不能够更新
    console.log('无更新')
    sendStatusToWindow('update-not-available', info)
  })
  autoUpdater.on('error', (err) => {
    // 更新错误
    sendStatusToWindow('autoUpdater-error', err)
  })
  autoUpdater.on('download-progress', (progressObj) => {
    // 正在下载的下载进度
    sendStatusToWindow('autoUpdater-progress', progressObj)
  })
  autoUpdater.on('update-downloaded', (info) => {
    // 下载完成
    sendStatusToWindow('autoUpdater-downloaded')
  })

  // 退出程序
  ipcMain.on('exit-app', () => {
    autoUpdater.quitAndInstall()
  })

  // 发起更新程序
  ipcMain.on('autoUpdater-toDownload', () => {
    autoUpdater.downloadUpdate()
  })

  // 每次运行APP检测更新。这里设置延时是为了避免还未开始渲染，更新检测就已经完成(网速超快，页面加载跟不上)。
  setTimeout(() => {
    // 检测是否有更新
    autoUpdater.checkForUpdates()
  }, 1500)
}
